import { _decorator, AudioClip, AudioSource, Component } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('Ab_AudioManager_bA')
export class Ab_AudioManager_bA extends Component {
	private static Ab__ins_bA: Ab_AudioManager_bA;
	/** 全局唯一安全实例 */
	public static get Ab_ins_bA(){
		return Ab_AudioManager_bA.Ab__ins_bA;
	}

	/** 音效类型 */
	public static get Ab_EAudio_bA(){
		return Ab_EAudio_bA;
	}

	@property(AudioSource)
	private Ab_bgm_bA: AudioSource = null;
	@property(AudioSource)
	private Ab_effect_bA: AudioSource = null;
	@property([AudioClip])
	private Ab_clip_list_bA: AudioClip[] = [];

	private Ab_clip_map_bA = new Map<string, AudioClip>();

	onLoad(){
		Ab_AudioManager_bA.Ab__ins_bA = this;
		this.Ab_init_bA();
	}

	private Ab_init_bA(){
		this.Ab_clip_list_bA.forEach(clip=>this.Ab_clip_map_bA.set(clip.name, clip));
	}

	public static Ab_playBGM_bA(){
		if(Ab_AudioManager_bA.Ab_ins_bA.Ab_bgm_bA.state == AudioSource.AudioState.PLAYING) return void 0;

		if(!Ab_AudioManager_bA.Ab_ins_bA.Ab_bgm_bA.clip){
			Ab_AudioManager_bA.Ab_ins_bA.Ab_bgm_bA.clip = Ab_AudioManager_bA.Ab_ins_bA.Ab_clip_map_bA.get(Ab_EAudio_bA.Ab_BGM_GLOBAL_bA);
			Ab_AudioManager_bA.Ab_ins_bA.Ab_bgm_bA.loop = true;
		}

		Ab_AudioManager_bA.Ab_ins_bA.Ab_bgm_bA.play();
	}

	public static Ab_pauseBgm_bA(){
		if(Ab_AudioManager_bA.Ab_ins_bA.Ab_bgm_bA.state != AudioSource.AudioState.PLAYING) return void 0;
		Ab_AudioManager_bA.Ab_ins_bA.Ab_bgm_bA.pause();
	}

	public static Ab_playEffect_bA(effect: Ab_EAudio_bA){
		let clip = Ab_AudioManager_bA.Ab_ins_bA.Ab_clip_map_bA.get(effect);
		if(!clip) return void 0;
		Ab_AudioManager_bA.Ab_ins_bA.Ab_effect_bA.playOneShot(clip);
	}

	// 静音
	public static Ab_mute_bA(mute: boolean){
		Ab_AudioManager_bA.Ab_ins_bA.Ab_bgm_bA.volume = mute ? 0 : 1;
		Ab_AudioManager_bA.Ab_ins_bA.Ab_effect_bA.volume = mute ? 0 : 1;
	}
}

enum Ab_EAudio_bA {
	/** 全局-游戏背景Bgm */
	Ab_BGM_GLOBAL_bA = "ui_01",
	/** 游戏内-关卡挑战失败背景音 */
	Ab_BGM_DEFEAT_bA = "ui_10",
	/** 游戏内-关卡挑战成功获胜背景音 */
	Ab_BGM_VICTORY_bA = "ui_05",
	/** 游戏内-获得钻石奖励背景音 */
	Ab_BGM_DIAMOND_bA = "ui_11",

	/** 全局-点击任意区域背景音 */
	Ab_EF_CLICK_bA = "ui_02",
	/** 游戏内-消除1组卡牌背景音 */
	Ab_EF_REMOVE_bA = "ui_03",
	/** 游戏内-获得钞票奖励上浮余额栏背景音 */
	Ab_EF_SYMBOL_bA = "ui_04",
	/** 过度页-背景音效 */
	Ab_EF_TRANSITION_bA = "ui_06",
	/** 游戏内-洗牌道具背景音 */
	Ab_EF_SHUFFLE_bA = "ui_07",
	/** 游戏内-撤回/移出道具背景音 */
	Ab_EF_REVOKE_bA = "ui_08",
	/** 游戏内-棋盘入场背景音 */
	Ab_EF_BOARD_bA = "ui_09",
}
